1. Field of the Invention
The described invention relates generally to the field of computer systems. More particularly, the invention relates to a method and apparatus for controlling the memory system of a computer system that allows the snoop phase of a memory transaction to be skipped if it is known the most current version of data is available.
2. Related Art
Proper operation of a multiprocessor computer system often requires that each microprocessor or other data manipulation device receive the most recent version of any requested data. The process of supplying the most recent version of requested data is called data coherency. One method for achieving data coherency specifies that each device in the computer system capable of local memory storage perform a search, called a "snoop," in response to each data requesting memory transaction initiated by another device. The snoop allows each responding device to determine if it has the most recent version of the data requested and provide the data, or otherwise indicate that the requesting device should cancel or postpone its request when the requested data is not available.
In order to allow each device time to perform a snoop, a snoop phase is normally added to each memory transaction. The snoop phase allows each device time to perform the required search by suspending the present transaction until the location of the most recent version of the data requested is discerned. While this reduces the speed with which a transaction is completed, the importance of maintaining data coherency requires that the snoop be performed nonetheless.
While the use of a snoop phase is usually necessary to maintain data coherency in a multiprocessor computer system, there are some situations in which it can be assured that the most recent version of data being requested is available such that the snoop phase is not necessary. For these situations, it is possible to skip the snoop phase and allow the transaction to proceed immediately. An example of such a situation is two consecutive transaction requests for the same data by the same device. During the second transaction it can be assured that the latest version of the data requested is available, since the latest version of the data will have been located during the first transaction. Despite this known availability, a snoop is nonetheless performed thus reducing the speed of the transaction. While this situation presents a special case, it is especially problematic because many operations and functions call for the same memory location to be manipulated during consecutive transactions. Furthermore, it is commonly the case that the unit of coherency, often called a "cache line", is significantly larger than the minimum data size in a computer system. This causes sequential accesses, several of which fall in the same unit of coherency, to all be subjected to the snoop phase. Therefore, it is desirable to provide a computer system that allows the snoop phase of a transaction to be skipped when the device requesting data in a present transaction has already requested data within the same unit of coherency in an immediately preceding transaction.